#include "DatoBSharp.h"
#include "funciones.h"

namespace Toolkit
{

DatoBSharp::DatoBSharp(const Clave &clave, const unsigned long int &posicion,
        const TipoSerializacion &tSerializacion)
{
    this->clave = clave.clonar();
    this->posicion = posicion;
    this->tSerializacion = tSerializacion;

}

DatoBSharp::~DatoBSharp()
{
    delete clave;
}

void DatoBSharp::serializar(stringstream &stream) const
{
    serializacionDigito(stream, tSerializacion, posicion);

    stringstream ssClave;
    clave->serializar(ssClave);

    stream.write(ssClave.str().c_str(), ssClave.str().size());
}

void DatoBSharp::hidratar(stringstream &stream)
{
    hidratacionDigito(stream, tSerializacion, posicion);

    clave->hidratar(stream);
}

Dato* DatoBSharp::clonar() const
{
    return new DatoBSharp(*clave, posicion, tSerializacion);
}

Clave *DatoBSharp::getClave() const
{
    return clave;
}

unsigned long int DatoBSharp::getPosicion() const
{
    return posicion;
}

}
